package weaver.ihg;

import com.alibaba.fastjson.JSON;
import com.cloudstore.dev.api.bean.MessageBean;
import com.cloudstore.dev.api.bean.MessageType;
import com.cloudstore.dev.api.util.Util_Message;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.integration.util.JSONUtil;

import java.io.IOException;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

/***
 * 异动变动数据的时候，发送消息给管理员,
 * 并且添加新的人工号，给条线人员
 * 删除旧的人的工号，给条线人员
 */
public class HttpSendMessageUtils {
    // 获取创建人名称
    public String getCreaterName(String str) {
        if (str.equals("1")) {
            return "系统管理员";
        }
        RecordSet rs = new RecordSet();
        rs.executeQuery("select lastname from  hrmresource where id=?", str);
        if (rs.next()) {
            return weaver.general.Util.null2String(rs.getString("lastname"));
        }
        return "";
    }
    /**
     * HotelRole_Comparison
     * 字段名	字段类型	字段用处
     * id	integer	数据id
     * inncode	char	酒店代码
     * hotel_role	char	酒店岗位
     * oldname	char	当前人员姓名
     * oldMerlin_id	char	当前工号
     * oldwxid	char	当前企微id
     * newname	char	最新人员姓名
     * newMerlin_id	char	最新工号
     * newwxid	char	最新企微id
     * type	char	人员状态(转岗/离职)
     * changeperson	char	变更人
     * status	char	确认状态
     *
     *  ODS_Master_Hotel_Info
     *
     * 字段名	字段类型	字段用处
     * Inncode	char	酒店代码
     * Sub_Region	char	区域/大区
     * Mgmt_Type	char
     * Brand	char	品牌
     * Brand_Abbr	char
     * Hotel_Name	char	酒店名称
     * Hotel_Name_CN	char	酒店中文名
     * Opening_Date	char	开业日期
     * Hotel_Status	integer	酒店状态
     * Province	char	所属省份
     * City	char	所属城市
     * Update_Date	char	更新时间
     *
     * 角色组 uf_rolegroup 表
     *
     * 	字段显示名	数据库字段名称	字段位置	表现形式	字段类型	显示顺序	加密设置
     * 	条线选择	txxz	主表	浏览按钮	自定义多选	0.00
     * 	管理员名单	adminname	主表	浏览按钮	多人力资源	0.00
     * 	是否可查看合规任务	sfkckhgrw	主表	选择框-下拉框	是　否	0.00
     * 	岗位字段名	gwzdm	主表	单行文本框	文本	0.00	加密设置
     * 	角色名称	rolename	主表	单行文本框	文本	1.00	加密设置
     * 	管理大区	managementregion	主表	浏览按钮	自定义单选	2.00
     * 	管理条线	managementline	主表	浏览按钮	多岗位	3.00
     * 	条线包含人员	lineuser	主表	浏览按钮	多人力资源	4.00
     *
     * @param  innCode 酒店代码
     * @param  hotel_role 酒店岗位
     * @param  hotel_Name 酒店名称
     * @param  oldname 当前人员姓名
     * @param  hotel_Name_CN 酒店中文名
     * @param  newname 新的人名
     * @param  oldMerlin_id 当前工号
     * @param  newMerlin_id 最新工号
     * */
    public  static void sendMessageToMangerAndLinePeople(String innCode,String hotel_role,String hotel_Name,String oldname,String hotel_Name_CN,String newname,
    String oldMerlin_id,String newMerlin_id
                                                 ){

        BaseBean baseBean=new BaseBean();
        baseBean.writeLog("hotel_Name===>"+hotel_Name+"===>inncode===>"+innCode+"====>hotel_role===>"+hotel_role+"====>hotel_Name===>"+hotel_Name+"====>oldname===>"+oldname+"====hotel_Name_CN=====>"+hotel_Name_CN+"====newname====>"+newname
        +"====>oldMerlin_id===>"+oldMerlin_id+"====>newMerlin_id====>"+newMerlin_id);
        //根据酒店代码找到大区
        //根据大区去找角色组建模表，区域/大区和酒店岗位在的数据的，线条人员数据，进行更新。
        //发送消息给管理员
        String findSql="select * from ODS_Master_Hotel_Info wherre Inncode=?";
        baseBean.writeLog("FindSql===>"+findSql);
        RecordSet recordSet=new RecordSet();
        RecordSet recordSet2=new RecordSet();
        recordSet.executeQuery(findSql,innCode);
        while (recordSet.next()){
            String sub_Region=recordSet.getString("Sub_Region");//区域/大区
            String txSql="select id,txxz,adminname,lineuser from uf_rolegroup where txxz LIKE CONCAT(',',?,',') or txxz =? or txxz like concat (?,',','%') and managementregion=?" ;
            baseBean.writeLog("txSql===>"+txSql);
            recordSet2.executeQuery(txSql,hotel_role,hotel_role,hotel_role,sub_Region);
            while (recordSet2.next()){
                String gly=recordSet2.getString("adminname");

                String[] lineuserStr=null;

                String lineuser=recordSet2.getString("lineuser");//条线人员
                baseBean.writeLog("lineuser==>"+lineuser);
                if(lineuser!=null){
                    lineuserStr=lineuser.split(",");
                    for (int i = 0; i < lineuserStr.length; i++) {
                        if(lineuserStr[i].equalsIgnoreCase(oldMerlin_id)){
                            lineuserStr[i]=newMerlin_id;
                        }
                    }

                }else{
                    lineuserStr=new String[1];
                    lineuserStr[0]=newMerlin_id;
                }
                String lineStrValue = Arrays.toString(lineuserStr);
                String updateLIneStr="update uf_rolegroup set lineuser=? where id=?";
                baseBean.writeLog("updateLIneStr===>"+updateLIneStr);
                recordSet2.executeUpdate(updateLIneStr,lineStrValue,recordSet2.getInt("id"));
                baseBean.writeLog("lineStrValue====>"+ lineStrValue);
                if(gly==null){
                    baseBean.writeLog("gly===>"+gly);
                    return;
                }
                baseBean.writeLog("gly==>"+gly);
                String []glyStr=gly.split(",");

                baseBean.writeLog("glyStr====>"+ Arrays.toString(glyStr));
                for (String glyItem : glyStr) {
                    String title = "异动消息提醒<br/>" +
                            "异动消息酒店权限消息提醒"; //标题
                    String context = "关于" + hotel_Name+"("+hotel_Name_CN+")" +"中岗位:"+hotel_role+",由"+oldname+"转移给了"+newname; //内容
                    MessageType messageType = MessageType.newInstance(1328); //消息来源
                    Set<String> userIdList=new HashSet<>();
                    userIdList.add(glyItem);

                    baseBean.writeLog("userIdList==>"+ JSONUtil.toJSONString(userIdList));
                    try {
                        MessageBean messageBean = Util_Message.createMessage(messageType,userIdList, title, context, null);
                        messageBean.setCreater(1);//创建人id
                        /*logger.info("====>hq messageBeanend(): " + JSON.toJSONString(messageBean));*/
                        baseBean.writeLog("====>hq messageBeanend(): " + JSON.toJSONString(messageBean));
                        Util_Message.store(messageBean);
                    } catch (IOException e) {
                        throw new RuntimeException(e);
                    }
                }


            }
        }
    }
}
